/**
 * ENEMIES
 **/

	// apparition aléatoire hors de la map entre 5 et 10 ennemis.
	// ia -> joueur (avec vitesse - importante)
	// si le joueur les frappe , ils meurent tout de suite (100 points*multiplicateur)
	// si ils touchent le joueur, celui ci perd -1 sur la .life (et est invulnérable pendant 2 secondes)

var Enemy = function() {
	
	this.J = '';
	this.nbEnnemies = 0;
	this.ENEMIES = [];
	this.currentPlayerX = 0;
	this.currentPlayerY = 0;
	this.collisionPlayer;
	this.pilou = 0;

	this.init = function(j) {
		this.J = j;

		this.nbEnnemies = parseInt(Math.random() * 5 + 5); // Entre 5 et 10

		var i = 0;
		while ( i < this.nbEnnemies ) {

			var randX = Math.random() * MAX_WIDTH_J1 + MAX_WIDTH_J1 / 1.5;
			var randY = Math.random() * MAX_HEIGHT_J1;

			/*if( Math.round( Math.random() ) == 0 ) {
				//randX = MAX_WIDTH_J1 - Math.random() * 40 + 40; // Entre 40 et 80
			} else {
				//randY = Math.random() * 40 + 40; // Entre 40 et 80
			}*/

			var image = new Image();
			image.src = 'assets/Sprite_Drone_Standing.png';

			/*var audioSource1 = $('audioSource1');
			audioSource1.src = 'audio/robot_calcul_01.wav';
			audioSource1.type = 'audio/wave';*/

			this.ENEMIES.push({
				img   : image,
				/*audio : audioSource1,*/
				bgx   : 0,
				bgy   : 0,
				bgw   : 1040,
				bgh   : 744,
				x     : randX,
				y     : randY,
				w     : 260, // SourceW
				h     : 186, // SourceH
				k     : 0,
				vx    : 16,
				vy    : 8
			});
			i++;
			
		};
	};

	// Dirige les drones de cette instance vers le personnage portant les coords playerX, playerY
	this.goToPlayer = function(playerX, playerY) {
		
		this.currentPlayerX = playerX;
		this.currentPlayerY = playerY;

		if( this.pilou >= 4 ) {
			var i = 0;
			while( i < this.ENEMIES.length ) {

				var e = this.ENEMIES[i];

				if( e.x + 100 > 0 ) { // (L'ennemi est a droite)
					e.x -= Math.random() * e.vx + e.vx;
				} else {
					this.ENEMIES.splice(i, 1);
				}
				if( e.y < playerY ) {// (L'ennemi est en haut du player) 
					e.y += Math.random() * e.vy;
				}
				if( e.y > playerY ) {// (L'ennemi est en bas du player) 
					e.y -= Math.random() * e.vy;
				}

				// L'ennemi est sur le player ? (pour gestion de la collision)
				if( this.timout == 0 && (e.x+110 > playerX+100 && e.x+110 < playerX+100 + 60) && (e.y+74 > playerY+42 && e.y+74 < playerY+42 + 72) ) {
					this.collisionPlayer = true;
					//this.timout = 120;
					//log('collision!');
				}
				else {
					this.collisionPlayer = false;
				}


				// Trop lourdingue
				//goToPattern( e.x , e.y , playerX , playerY , e );
				
				i++;
			}

			this.pilou = 0;
		} else {
			this.pilou++;
		}

		this.animate();

	};

	// Animation des drones
	this.animate = function() {

			var i = 0;
			while( i < this.ENEMIES.length ) {

				var e = this.ENEMIES[i];
				
				/*if( e.x < this.currentPlayerX ) {
					if( this.currentPlayerX - e.x < 30 ) {
						if( e.y < this.currentPlayerY ) {
							e.bgy = e.h * 2;
						} else {
							e.bgy = e.h * 0;
						}
					} else {
						e.bgy = e.h * 1;
					}
				}
				else if( e.x > this.currentPlayerX ) {
					if( e.x - this.currentPlayerX < 30 ) {
						if( e.y < this.currentPlayerY ) {
							e.bgy = e.h * 2;
						} else {
							e.bgy = e.h * 0;
						}
					} else {
						e.bgy = e.h * 3;
					}
				}*/
				e.bgy = e.h * 3;

				e.k++;

				if( e.k >= 6 ) {
					e.k = 0;
					e.bgx += e.w;
					if( e.bgx >= e.bgw ) {
						e.bgx = 0;
					}
				} 

				i++;
			}

			this.render();

	};

	// Rendu visuel des ennemis
	this.render = function() {
		
		var i = 0;
		while( i < this.ENEMIES.length ) {
			
			var e = this.ENEMIES[i];
				
			ctx[this.J].drawImage( e.img ,
				e.bgx, // position x en image source
				e.bgy, // position y en image source
				e.w, // largeur image source
				e.h, // hauteur image source
				e.x, // position X sur canvas de destination
				e.y, // position Y sur canvas de destination
				e.w, // largeur Y sur canvas de destination (possibilité de zoom)
				e.h // largeur Y sur canvas de destination (possibilité de zoom)
			);

			i++;
		}

	};


};






function goToPattern(xStart,yStart,xStop,yStop,pattern) { // moveOblique() modifiée...
	var a = yStop-yStart;
	var b = -1*(xStop-xStart);
	var c = (yStart*xStop)-(xStart*yStop);
	var currentX = 0;
	//do {
		currentX+=pattern.vx;
		if (xStop > xStart ) 		pattern.x = xStart + currentX;
		else if (xStart > xStop) 	pattern.x = xStart - currentX;
		pattern.y = (a/(-b))*pattern.x + (c/-b);
	//} while (currentX < Math.abs(xStop-xStart))
}

//enemies.goToPlayer(x, y); // coordonnées x/y du player
//enemies.eventListeners(); 